<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2018/4/19
 * Time: 12:33
 */

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;
use think\Session;

// 分页功能
use think\Paginator;
use think\paginator\driver\Bootstrap;

class Node extends AdminController
{
    public function index()
    {
        // 页面分页
        $list = db('node')
            ->order('id')
            ->paginate(10, false)
            ->each(function ($item, $key) {
                $item['status'] = '1';
                return $item;
            });
        $page = $list->render();
        $this->assign('list', $list);
        $this->assign('page', $page);

        // 查看权限表
        $node = db('node')->paginate(10);

        return view('', [
            'title' => '权限列表',
            'list' => $list,
            'node' => $node,
            'page' => $page
        ]);
    }

    // 权限添加 页面加载
    public function add()
    {
        return view('', ['title' => '权限添加']);
    }

    // 权限添加 处理
    public function doadd()
    {
        // 接收表单提交过来的数据
        $res = input('post.');

        // 查询数据表 node 中是否存在该权限名
        $data = db('node')->where('name', $res['name'])->find();

        // 判断数据库中是否存在该权限
        // 若$data = null, 则执行添加；否则，添加失败
        if (empty($data)) {
            // 权限名：输入2-15个字符(仅支持中文)
            $pregName = '/^[\x{4e00}-\x{9fa5}]{2,15}+$/u';
            if (!preg_match($pregName, $res['name'])) {
                $this->error('权限名格式不正确o(╥﹏╥)o');
            }
            if (empty($res['mname'])) {
                $this->error('模块名不能为空');
            }
            if (empty($res['aname'])) {
                $this->error('方法名不能为空');
            }
            // 添加单条数据
            $list = db('node')->insert($res);
            $this->success('权限添加成功(*^▽^*)', 'admin/Node/index');
        } else {
            $this->error('权限名已存在，添加失败o(╥﹏╥)o');
        }
    }

    // 权限编辑 页面加载
    public function edit($id)
    {
        // 查询node表
        $data = db('node')->where('id', $id)->find();

        return view('', [
            'title' => '权限编辑',
            'data' => $data,
            'id' => $id
        ]);
    }

    // 权限编辑 处理
    public function doedit($id)
    {
        // 接收表单传过来的数据
        $res = input('post.');

        // 查询数据库中是否存在该权限名 name
        $data = db('node')->where('id', $id)->find();
//        dump($data);

        // 权限名：输入2-15个字符(仅支持中文)
        $pregName = '/^[\x{4e00}-\x{9fa5}]{2,15}+$/u';
        if (!preg_match($pregName, $res['name'])) {
            $this->error('权限名格式不正确o(╥﹏╥)o');
        }
        if (empty($res['mname'])) {
            $this->error('模块名不能为空');
        }
        if (empty($res['aname'])) {
            $this->error('方法名不能为空');
        }
        if (empty($res['status'])) {
            $this->error('状态不可为空');
        }

        // 判断原权限名与编辑的权限名是否相等
        // 不相等时，查询数据库中是否存在该权限名（若$name 返回null, 则证明可以执行更新；否则，提示权限名已存在，再次跳转到编辑页面）
        if (!($res['name'] == $data['name'])) {
            // 查询数据库是否存在该活动名 name
            $name = db('node')->where('name', $res['name'])->find();
            // 如果 $name为空，则可以执行下一步的更新；否则权限名已存在，请重新输入权限名
            if (!empty($name)) {
                $this->success('权限名已存在，请重新输入');

            }
        }

        // 更新数据表中的数据
        $list = db('node')->where('id', $id)->update([
            'name' => $res['name'],
            'mname' => $res['mname'],
            'aname' => $res['aname'],
            'status' => $res['status']
        ]);

        // 判断是否更新成功
        if (!empty($list)) {
            $this->success('权限更新成功(*^▽^*)', 'admin/Node/index');
        } else {
            $this->error('您没有做任何编辑', 'admin/Node/index');
        }
    }

    // 权限删除
//    public function delete($id)
//    {
//        // 删除权限
//        $data = db('node')->where('id', $id)->delete();
//
//        // 判断是否删除成功
//        if ($data > 0) {
//            $this->success('权限删除成功(*^▽^*)', 'admin/Node/index');
//        } else {
//            $this->error('权限删除失败o(╥﹏╥)o');
//        }
//    }

    public function delete($id)
    {
        // 删除权限
        $data = db('node')->where('id', $id)->delete();

        // 将状态码返回给ajax
        if ($data){
            $arr['status'] = 1;
            $arr['msg'] = '权限删除成功';
            return $arr;
        } else {
            $arr['status'] = 2;
            $arr['msg'] = '权限删除失败';
            return $arr;
        }
    }

    // 验证权限名的唯一性
    public function addchecknodename()
    {
        // 接收表单提交过来的数据
        $res = input('post.');

        // 查询数据表 node 中是否存在该权限名
        $data = db('node')->where('name', $res['name'])->find();

        // 判断数据库中是否存在该权限
        if (empty($data)) {
            return true;
        } else {
            return false;
        }
    }
}